/**
 * 
 */
package model;

import java.util.ArrayList;
import java.util.Iterator;

import model.container.AangebodenCursussen;
import model.container.Cursussen;
import model.container.Lectoren;
import persistency.DatabaseToegang;;
/**
 * @ Authors:
 * 
 * @Veronique De Laet
 * @Johan Willems
 * @Pierre Delaere
 * 
 * @version 2011
 */
public class LectorUren implements IPlanningRule {

	/* (non-Javadoc)
	 * @see model.IPlanningRule#voldoet(java.lang.String)
	 */

	private String deLectorCode;
	private String dbCommand;
	private int gewensteUren;


	@Override
	public String voldoet(String nieuweCursus) {
		String lectorCode= "";
		int maxLectorUren = 0;
		int cursusUren = 0;
		String resultaat = "";

		String[] deel = nieuweCursus.split("   "); 
		String[] cursus = deel[0].split(":");// de cursusnaam is het derde deel van het eerste blok
		String[] lector = deel[1].split(":");//de lector in het tweede deel van het tweede blok
/*file persistency		
		Iterator<Lector> lectorI = Lectoren.lectorenLijst.values().iterator();
		while (lectorI.hasNext()) {
			Lector tLector = lectorI.next();
			if (tLector.getLectorNaam().equals(lector[1])){
				lectorCode = tLector.getLectorCode();
				maxLectorUren = tLector.getAantalGewensteUren();
			}
		}
		
		Iterator<Cursus> cursusI = Cursussen.cursusLijst.values().iterator();
		while (cursusI.hasNext()){
			Cursus tCursus = cursusI.next();
			if (cursus.equals(tCursus.getCursusNaam())){
				cursusUren += (tCursus.getLestijdPerWeek()/60);
			}
		}
		
		Iterator<AangebodenCursus> aCursusI = AangebodenCursussen.aangebodenCursusLijst.values().iterator();
		while (aCursusI.hasNext()) {
			AangebodenCursus aCursus = aCursusI.next();
			if (lectorCode.equals(aCursus.getLectorCode())){
				Iterator<Cursus> cursusIt = Cursussen.cursusLijst.values().iterator();
				while (cursusIt.hasNext()){ 
					Cursus bCursus = cursusIt.next();
					if(lectorCode.equals(bCursus.getLector())) {
						cursusUren += (bCursus.getLestijdPerWeek()/60);
					}
				}
			}
			if (cursusUren > maxLectorUren){
				resultaat = String.format("Lector %s mag maximaal %s uren les geven. ", lector, maxLectorUren);
			}
		}
		*/
		DatabaseToegang db = new DatabaseToegang();
		ArrayList<String> lijst = new ArrayList<String>();
		dbCommand = "select * from lector where lectornaam = '" + lector[1] + "'";
		lijst = db.getFromDB(dbCommand);
		for(String elementen:lijst)
		{
			String[] element = elementen.split(";");
			deLectorCode = element[0];
			gewensteUren = Integer.parseInt(element[2]);
		}
		
		dbCommand = "select sum(t.duur) from aangebodencursus a,tijdsmoment t ";
		dbCommand += "where a.idTijdsMoment = t.idTijdsMoment and a.lectorcode = '" + deLectorCode +"'";
		try
		{
		lijst = db.getFromDB(dbCommand);
		for(String element : lijst)
			if(Integer.parseInt(element) > gewensteUren)
				resultaat = String.format("Lector %s mag maximaal %s uren les geven. ", lector[1], gewensteUren);
		}
		catch (Exception e)
		{
			
		}
		return resultaat;
	}

}
